package com.nd.qa.shareplate.IDao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.nd.qa.shareplate.model.Project;

public interface ProjectMapper {
	
	/**
	 * 新建项目
	 * @return
	 */
	public void insertProject(Project project);
	/**
	 * 删除项目
	 * @param projectId
	 * @return
	 */
	public void deleteProjectById(Integer projectId); 
	/**
	 * 修改项目
	 * @param project
	 */
	public void updateProject(Project project);
	/**
	 * 更新已有项目信息
	 * @param project
	 */
	public void saveProjectInfo(Project project);
	/**
	 * 根据userId查询项目
	 * @return
	 */
	public List<Map<String, Object>> queryPrjInfoByUserId(Integer userId);
	/**
	 * 查询项目类型
	 * @return
	 */
	public List<HashMap<String, Object>> queryProjectType();
	/**
	 * 查询测试类型
	 * @return
	 * @throws Exception
	 */
	public List<HashMap<String, Object>> queryTestType();
	/**
	 * 查询所有项目
	 * @param project
	 * @return
	 */
	public List<HashMap<String, Object>> queryTotalProject(Project project);
	/**
	 * 查询已有的项目信息
	 * @param project
	 * @return
	 */
	public HashMap<String, Object> queryTheProject(Project project);
	/**
	 * 查询用户申请的项目
	 * @param project
	 * @return
	 */
	public HashMap<String, Object> queryApplyProject(HashMap<String, Object> map);
	/**
	 * 分页查询项目记录
	 * @param project
	 * @return
	 */
	public List<HashMap<String, Object>> queryLimitProject(HashMap<String, Object> paramMap);
	/**
	 * 查询可以测试的脚本项目
	 * @param project
	 * @return
	 * @throws Exception
	 */
	public List<HashMap<String, Object>> queryScriptsById(HashMap<String, Object> param) throws Exception;;
	/**
	 * 查询项目信息
	 */
	public Project queryProjectById(int projectId);
	/**
	 * 查询所有非本用户的项目信息
	 * @param project
	 * @return
	 * @throws Exception
	 */
	public List<HashMap<String, Object>> queryOnlineProject(Project project) throws Exception;
	/**
	 * 查询项目权限信息
	 * @param project
	 * @return
	 */
	public List<HashMap<String, Object>> queryAuthorizionInfo();
	/**
	 * 查询拥有项目权限
	 * @param project
	 * @return
	 */
	public List<Project> queryNoAuthForUser(Project project);
	/**
	 * 查询项目序列号
	 * @param param
	 * @return
	 */
	public Integer queryProjectSeqByName(String param);
	/**
	 * 修改用户权限
	 * @param project
	 */
	public void updateAuthorizedProject(Project project);
}
